#ifndef PORTABLE_RUNTIME_H_
#define PORTABLE_RUNTIME_H_

namespace portable {

// in portable-bytecode-lower.cc, we use name to get v8 function id, you can see
// the name in runtime.cc at kIntrinsicFunctions[]
#define P_RUNTIME_FUNCTIONS(V)                        \
  V(InternalSetPrototype)                             \
  V(ThrowIteratorResultNotAnObject)                   \
  V(ResolvePossiblyDirectEval)                        \
  V(DefineAccessorPropertyUnchecked)                  \
  V(DefineGetterPropertyUnchecked)                    \
  V(DefineSetterPropertyUnchecked)                    \
  V(SetFunctionName)                                  \
  V(LoadFromSuper)                                    \
  V(LoadKeyedFromSuper)                               \
  V(StoreToSuper)                                     \
  V(StoreKeyedToSuper)                                \
  V(DefineClass)                                      \
  V(CreatePrivateBrandSymbol)                         \
  V(CreatePrivateNameSymbol)                          \
  V(CreatePrivateAccessors)                           \
  V(LoadPrivateGetter)                                \
  V(LoadPrivateSetter)                                \
  V(DynamicImportCall)                                \
  V(DeleteLookupSlot)                                 \
  V(_GeneratorClose)                                  \
  V(_AsyncFunctionReject)                             \
  V(_AsyncGeneratorReject)                            \
  V(_CopyDataProperties)                              \
  V(_CopyDataPropertiesWithExcludedPropertiesOnStack) \
  V(NewTypeError)                                     \
  V(ThrowPatternAssignmentNonCoercible)               \
  V(ThrowStaticPrototypeError)                        \
  V(ThrowUnsupportedSuperError)                       \
  V(ThrowConstAssignError)                            \
  V(ThrowUsingAssignError)

#define P_NATIVE_CONTEXT_FIELDS(V)                          \
  V(REFLECT_CONSTRUCT_INDEX, JSFunction, reflect_construct) \
  V(REFLECT_APPLY_INDEX, JSFunction, reflect_apply)

}  // namespace portable

#endif  // PORTABLE_RUNTIME_H_
